import { createStore } from 'vuex'

export default createStore({
  state: {
    loding: true,//loding 状态
    status: true,//Tab 组件显示状态
    cart: JSON.parse(localStorage.getItem('cart') || '[]'),
  },
  mutations: {
    setloding(state, data) {
      state.loding = data
    },
    setstatus(state, data) {
      state.status = data
    },
    addcart(state, goods) {
      // 根据提交的商品的Id，查询购物车中是否存在这件商品
      // 如果不存在，则 findResult 为 undefined；否则，为查找到的商品信息对象
      const findResult = state.cart.find(item => item.id === goods.id)
      if (!findResult) {
        // 如果购物车中没有这件商品，则直接 push
        state.cart.push(goods)
      } else {
        // 如果购物车中有这件商品，则只更新数量即可
        findResult.count++
      }
      // 调用缓存
      this.commit('setlocalStorage')
    },
    // 缓存
    setlocalStorage(state) {
      localStorage.setItem('cart', JSON.stringify(state.cart))
    },
  },
  actions: {
  },
  modules: {
  },
  getters: {
    // 统计购物车中商品的总数量
    total(state) {
      return state.cart.length
    },
    // 总价
    totalNumber(state) {
      let sum = 0;
      for (let i = 0; i < state.cart.length; i++) {
        sum += state.cart[i].price * state.cart[i].count
      }
      return sum
    },
    getgoodsmount(state) {
      var num = {
        count: 0,//勾选的数量
        mount: 0,///勾选的单价
      }
      state.cart.forEach(item => {
        if (item.checked) {
          num.count += item.count
          num.mount += (item.price * 100) * item.count
        }
      });
      return num
    },
    cartList(state) {
      return state.cart
    },
  }
})
